GtkCellArea *cell_area;
GtkCellAreaContext *cell_area_context;
+ gulong add_editable_id;
+ gulong remove_editable_id;
+ gulong focus_changed_id;
+ gulong context_changed_id;
+
gint width, height;
GtkSelectionMode selection_mode;
guint layout_idle_id;
- gboolean doing_rubberband;
gint rubberband_x1, rubberband_y1;
gint rubberband_x2, rubberband_y2;
GdkDevice *rubberband_device;
GtkIconViewItem *anchor_item;
GtkIconViewItem *cursor_item;
- GtkIconViewItem *edited_item;
- GtkCellEditable *editable;
GtkIconViewItem *last_single_clicked;
gint markup_column;
gint pixbuf_column;
- gint pixbuf_cell;
- gint text_cell;
+ GtkCellRenderer *pixbuf_cell;
+ GtkCellRenderer *text_cell;
gint tooltip_column;
* driving the scrollable adjustment values */
guint hscroll_policy : 1;
guint vscroll_policy : 1;
+
+ guint doing_rubberband : 1;
+
};
/* Signals */
static void gtk_icon_view_item_selected_changed (GtkIconView *icon_view,
GtkIconViewItem *item);
-static void gtk_icon_view_put (GtkIconView *icon_view,
- GtkWidget *widget,
- gint x,
- gint y,
- gint width,
- gint height);
-static void gtk_icon_view_remove_widget (GtkCellEditable *editable,
+
+static void gtk_icon_view_add_editable (GtkCellArea *area,
+ GtkCellRenderer *renderer,
+ GtkCellEditable *editable,
+ GdkRectangle *cell_area,
+ const gchar *path,
+ GtkIconView *icon_view);
+static void gtk_icon_view_remove_editable (GtkCellArea *area,
+ GtkCellRenderer *renderer,
+ GtkCellEditable *editable,
+ GtkIconView *icon_view);
+static void gtk_icon_view_focus_changed (GtkCellArea *area,
+ GtkCellRenderer *renderer,
+ const gchar *path,
GtkIconView *icon_view);
-static void gtk_icon_view_start_editing (GtkIconView *icon_view,
- GtkIconViewItem *item,
- GdkEvent *event);
-static void gtk_icon_view_stop_editing (GtkIconView *icon_view,
- gboolean cancel_editing);
/* Source side drag signals */
static void gtk_icon_view_drag_begin (GtkWidget *widget,
icon_view->priv->text_column = -1;
icon_view->priv->markup_column = -1;
icon_view->priv->pixbuf_column = -1;
- icon_view->priv->text_cell = -1;
- icon_view->priv->pixbuf_cell = -1;
+ icon_view->priv->text_cell = NULL;
+ icon_view->priv->pixbuf_cell = NULL;
icon_view->priv->tooltip_column = -1;
gtk_widget_set_can_focus (GTK_WIDGET (icon_view), TRUE);
priv->cell_area_context = gtk_cell_area_create_context (priv->cell_area);
- return object;
+ priv->add_editable_id =
+ g_signal_connect (priv->cell_area, "add-editable",
+ G_CALLBACK (gtk_icon_view_add_editable), icon_view);
+ priv->remove_editable_id =
+ g_signal_connect (priv->cell_area, "remove-editable",
+ G_CALLBACK (gtk_icon_view_remove_editable), icon_view);
+ priv->focus_changed_id =
+ g_signal_connect (priv->cell_area, "focus-changed",
+ G_CALLBACK (gtk_icon_view_focus_changed), icon_view);
+ return object;
}
static void
if (priv->cell_area)
{
+ g_signal_handler_disconnect (priv->cell_area, priv->add_editable_id);
+ g_signal_handler_disconnect (priv->cell_area, priv->remove_editable_id);
+ g_signal_handler_disconnect (priv->cell_area, priv->focus_changed_id);
+ priv->add_editable_id = 0;
+ priv->remove_editable_id = 0;
+ priv->focus_changed_id = 0;
+
g_object_unref (priv->cell_area);
priv->cell_area = NULL;
}
{
GtkIconView *icon_view = GTK_ICON_VIEW (widget);
- gtk_icon_view_stop_editing (icon_view, TRUE);
+ gtk_cell_area_stop_editing (icon_view->priv->cell_area, TRUE);
gtk_icon_view_set_model (icon_view, NULL);
}
}
-static void
-gtk_icon_view_put (GtkIconView *icon_view,
- GtkWidget *widget,
- gint x,
- gint y,
- gint width,
- gint height)
+static void
+gtk_icon_view_add_editable (GtkCellArea *area,
+ GtkCellRenderer *renderer,
+ GtkCellEditable *editable,
+ GdkRectangle *cell_area,
+ const gchar *path,
+ GtkIconView *icon_view)
{
GtkIconViewChild *child;
+ GtkWidget *widget = GTK_WIDGET (editable);
child = g_new (GtkIconViewChild, 1);
child->widget = widget;
- child->area.x = x;
- child->area.y = y;
- child->area.width = width;
- child->area.height = height;
+ child->area.x = cell_area->x;
+ child->area.y = cell_area->y;
+ child->area.width = cell_area->width;
+ child->area.height = cell_area->height;
icon_view->priv->children = g_list_append (icon_view->priv->children, child);
}
static void
-gtk_icon_view_remove_widget (GtkCellEditable *editable,
- GtkIconView *icon_view)
+gtk_icon_view_remove_editable (GtkCellArea *area,
+ GtkCellRenderer *renderer,
+ GtkCellEditable *editable,
+ GtkIconView *icon_view)
{
- GtkIconViewItem *item;
-
- if (icon_view->priv->edited_item == NULL)
- return;
-
- item = icon_view->priv->edited_item;
- icon_view->priv->edited_item = NULL;
- icon_view->priv->editable = NULL;
+ GtkTreePath *path;
if (gtk_widget_has_focus (GTK_WIDGET (editable)))
gtk_widget_grab_focus (GTK_WIDGET (icon_view));
- g_signal_handlers_disconnect_by_func (editable,
- gtk_icon_view_remove_widget,
- icon_view);
-
gtk_container_remove (GTK_CONTAINER (icon_view),
GTK_WIDGET (editable));
- gtk_icon_view_queue_draw_item (icon_view, item);
-}
-
-
-static void
-gtk_icon_view_start_editing (GtkIconView *icon_view,
- GtkIconViewItem *item,
- GdkEvent *event)
-{
- GdkRectangle cell_area;
- GtkIconViewPrivate *priv = icon_view->priv;
-
- gtk_icon_view_set_cell_data (icon_view, item);
- gtk_icon_view_get_cell_area (icon_view, item, &cell_area);
- gtk_cell_area_activate (priv->cell_area, priv->cell_area_context,
- GTK_WIDGET (icon_view), &cell_area, 0 /* XXX flags */);
+ path = gtk_tree_path_new_from_string (gtk_cell_area_get_current_path_string (area));
+ gtk_icon_view_queue_draw_path (icon_view, path);
+ gtk_tree_path_free (path);
}
static void
-gtk_icon_view_stop_editing (GtkIconView *icon_view,
- gboolean cancel_editing)
+gtk_icon_view_focus_changed (GtkCellArea *area,
+ GtkCellRenderer *renderer,
+ const gchar *path,
+ GtkIconView *icon_view)
{
- GtkCellRenderer *cell = NULL;
- GtkIconViewItem *item;
- GList *l;
-
- if (icon_view->priv->edited_item == NULL)
- return;
-
- /*
- * This is very evil. We need to do this, because
- * gtk_cell_editable_editing_done may trigger gtk_icon_view_row_changed
- * later on. If gtk_icon_view_row_changed notices
- * icon_view->priv->edited_item != NULL, it'll call
- * gtk_icon_view_stop_editing again. Bad things will happen then.
- *
- * Please read that again if you intend to modify anything here.
- */
-
- /* XXX replace this with add-editable/remove-editable apis */
+ /* XXX Update cursor item for focus path here */
}
/**
g_return_if_fail (path != NULL);
g_return_if_fail (cell == NULL || GTK_IS_CELL_RENDERER (cell));
- gtk_icon_view_stop_editing (icon_view, TRUE);
+ gtk_cell_area_stop_editing (icon_view->priv->cell_area, TRUE);
if (gtk_tree_path_get_depth (path) == 1)
item = g_list_nth_data (icon_view->priv->items,
gtk_icon_view_scroll_to_path (icon_view, path, FALSE, 0.0, 0.0);
if (start_editing)
- gtk_icon_view_start_editing (icon_view, item, NULL);
+ {
+ GdkRectangle cell_area;
+
+ gtk_icon_view_set_cell_data (icon_view, item);
+ gtk_icon_view_get_cell_area (icon_view, item, &cell_area);
+ gtk_cell_area_activate (icon_view->priv->cell_area,
+ icon_view->priv->cell_area_context,
+ GTK_WIDGET (icon_view), &cell_area, 0 /* XXX flags */, TRUE);
+ }
}
/**
icon_view->priv->last_single_clicked = item;
/* cancel the current editing, if it exists */
- gtk_icon_view_stop_editing (icon_view, TRUE);
+ gtk_cell_area_stop_editing (icon_view->priv->cell_area, TRUE);
- if (cell != NULL)
+ if (cell != NULL && gtk_cell_renderer_is_activatable (cell))
{
gtk_icon_view_set_cell_data (icon_view, item);
gtk_icon_view_get_cell_area (icon_view, item, &cell_area);
gtk_cell_area_activate (icon_view->priv->cell_area,
icon_view->priv->cell_area_context,
GTK_WIDGET (icon_view),
- &cell_area, 0/* XXX flags */);
+ &cell_area, 0/* XXX flags */, FALSE);
}
}
else
gtk_icon_view_get_cell_area (icon_view, icon_view->priv->cursor_item, &cell_area);
activated = gtk_cell_area_activate (icon_view->priv->cell_area,
icon_view->priv->cell_area_context,
- GTK_WIDGET (icon_view), &cell_area, 0 /* XXX flags */);
+ GTK_WIDGET (icon_view), &cell_area, 0 /* XXX flags */, FALSE);
path = gtk_tree_path_new_from_indices (icon_view->priv->cursor_item->index, -1);
gtk_icon_view_item_activated (icon_view, path);
item_width = icon_view->priv->item_width;
- /* Fetch the new item width */
+ /* Update the context widths for any invalidated
+ * items */
+ gtk_icon_view_cache_widths (icon_view);
+
+ /* Fetch the new item width if needed */
if (item_width < 0)
{
- gtk_icon_view_cache_widths (icon_view);
gtk_cell_area_context_get_preferred_width (icon_view->priv->cell_area_context,
&item_width, NULL);
item_width += icon_view->priv->item_padding * 2;
{
GtkIconViewItem *item = items->data;
- gtk_icon_view_set_cell_data (icon_view, item);
- gtk_cell_area_get_preferred_width (icon_view->priv->cell_area,
- icon_view->priv->cell_area_context,
- GTK_WIDGET (icon_view), NULL, NULL);
+ /* Only fetch the width of items with invalidated sizes */
+ if (item->width < 0)
+ {
+ gtk_icon_view_set_cell_data (icon_view, item);
+ gtk_cell_area_get_preferred_width (icon_view->priv->cell_area,
+ icon_view->priv->cell_area_context,
+ GTK_WIDGET (icon_view), NULL, NULL);
+ }
}
}
-
static void
gtk_icon_view_invalidate_sizes (GtkIconView *icon_view)
{
x, y,
item->width, item->height);
}
-
- cell_area.x = x - item->x;
- cell_area.y = y - item->y;
+
+ cell_area.x = x;
+ cell_area.y = y;
cell_area.width = item->width;
cell_area.height = item->height;
+ if (gtk_widget_has_focus (widget) && item == icon_view->priv->cursor_item)
+ flags |= GTK_CELL_RENDERER_FOCUSED;
+
gtk_cell_area_render (priv->cell_area, priv->cell_area_context,
widget, cr, &cell_area, &cell_area, flags,
- draw_focus &&
- gtk_widget_has_focus (widget) &&
- item == icon_view->priv->cursor_item);
+ draw_focus);
}
static void
{
GtkIconViewItem *item;
- item = g_new0 (GtkIconViewItem, 1);
+ item = g_slice_new0 (GtkIconViewItem);
- item->width = -1;
+ item->width = -1;
item->height = -1;
return item;
{
g_return_if_fail (item != NULL);
- g_free (item);
+ g_slice_free (GtkIconViewItem, item);
}
-
static GtkIconViewItem *
gtk_icon_view_get_item_at_coords (GtkIconView *icon_view,
gint x,
{
GtkIconViewItem *item = items->data;
- if (x >= item->x - icon_view->priv->column_spacing/2 && x <= item->x + item->width + icon_view->priv->column_spacing/2 &&
- y >= item->y - icon_view->priv->row_spacing/2 && y <= item->y + item->height + icon_view->priv->row_spacing/2)
+ if (x >= item->x - icon_view->priv->column_spacing/2 &&
+ x <= item->x + item->width + icon_view->priv->column_spacing/2 &&
+ y >= item->y - icon_view->priv->row_spacing/2 &&
+ y <= item->y + item->height + icon_view->priv->row_spacing/2)
{
if (only_in_cell || cell_at_pos)
{
GdkRectangle cell_area;
- GtkCellRenderer *cell;
+ GtkCellRenderer *cell = NULL;
gtk_icon_view_set_cell_data (icon_view, item);
gtk_icon_view_get_cell_area (icon_view, item, &cell_area);
- cell = gtk_cell_area_get_cell_at_position (icon_view->priv->cell_area,
- icon_view->priv->cell_area_context,
- GTK_WIDGET (icon_view),
- &cell_area,
- x, y, NULL);
+
+ if (x >= cell_area.x && x <= cell_area.x + cell_area.width &&
+ y >= cell_area.y && y <= cell_area.y + cell_area.height)
+ cell = gtk_cell_area_get_cell_at_position (icon_view->priv->cell_area,
+ icon_view->priv->cell_area_context,
+ GTK_WIDGET (icon_view),
+ &cell_area,
+ x, y, NULL);
if (cell_at_pos)
*cell_at_pos = cell;
else
return item;
}
-
return item;
}
}
-
return NULL;
}
if (gtk_tree_path_get_depth (path) > 1)
return;
- gtk_icon_view_stop_editing (icon_view, TRUE);
+ gtk_cell_area_stop_editing (icon_view->priv->cell_area, TRUE);
index = gtk_tree_path_get_indices(path)[0];
item = g_list_nth_data (icon_view->priv->items, index);
list = g_list_nth (icon_view->priv->items, index);
item = list->data;
- gtk_icon_view_stop_editing (icon_view, TRUE);
+ gtk_cell_area_stop_editing (icon_view->priv->cell_area, TRUE);
if (item == icon_view->priv->anchor_item)
icon_view->priv->anchor_item = NULL;
if (iter != NULL)
return;
- gtk_icon_view_stop_editing (icon_view, TRUE);
+ gtk_cell_area_stop_editing (icon_view->priv->cell_area, TRUE);
length = gtk_tree_model_iter_n_children (model, NULL);
if (!gtk_widget_has_focus (GTK_WIDGET (icon_view)))
return FALSE;
- gtk_icon_view_stop_editing (icon_view, FALSE);
+ gtk_cell_area_stop_editing (icon_view->priv->cell_area, FALSE);
gtk_widget_grab_focus (GTK_WIDGET (icon_view));
if (gtk_get_current_event_state (&state))
gtk_icon_view_move_cursor_up_down (GtkIconView *icon_view,
gint count)
{
-#if _I_HAD_A_MILLION_DOLLARS_
GtkIconViewItem *item;
- gint cell;
+ GtkCellRenderer *cell;
gboolean dirty = FALSE;
gint step;
GtkDirectionType direction;
list = g_list_last (icon_view->priv->items);
item = list ? list->data : NULL;
- cell = -1;
+
+ /* Give focus to the first cell initially */
+ gtk_icon_view_set_cell_data (icon_view, item);
+ gtk_cell_area_focus (icon_view->priv->cell_area, direction);
}
else
{
item = icon_view->priv->cursor_item;
- cell = icon_view->priv->cursor_cell;
step = count > 0 ? 1 : -1;
+
+ /* Save the current focus cell in case we hit the edge */
+ cell = gtk_cell_area_get_focus_cell (icon_view->priv->cell_area);
+
while (item)
{
- cell = find_cell (icon_view, item, cell,
- GTK_ORIENTATION_VERTICAL,
- step, &count);
- if (count == 0)
+ gtk_icon_view_set_cell_data (icon_view, item);
+
+ if (gtk_cell_area_focus (icon_view->priv->cell_area, direction))
break;
item = find_item (icon_view, item, step, 0);
- count = count - step;
}
}
GTK_DIR_TAB_FORWARD);
}
+ gtk_cell_area_set_focus_cell (icon_view->priv->cell_area, cell);
return;
}
icon_view->priv->selection_mode != GTK_SELECTION_MULTIPLE)
icon_view->priv->anchor_item = item;
+ cell = gtk_cell_area_get_focus_cell (icon_view->priv->cell_area);
gtk_icon_view_set_cursor_item (icon_view, item, cell);
if (!icon_view->priv->ctrl_pressed &&
if (dirty)
g_signal_emit (icon_view, icon_view_signals[SELECTION_CHANGED], 0);
-#endif
}
static void
gtk_icon_view_move_cursor_left_right (GtkIconView *icon_view,
gint count)
{
-#if _I_HAD_A_MILLION_DOLLARS_
GtkIconViewItem *item;
- gint cell = -1;
+ GtkCellRenderer *cell = NULL;
gboolean dirty = FALSE;
gint step;
GtkDirectionType direction;
list = g_list_last (icon_view->priv->items);
item = list ? list->data : NULL;
+
+ /* Give focus to the first cell initially */
+ gtk_icon_view_set_cell_data (icon_view, item);
+ gtk_cell_area_focus (icon_view->priv->cell_area, direction);
}
else
{
item = icon_view->priv->cursor_item;
- cell = icon_view->priv->cursor_cell;
step = count > 0 ? 1 : -1;
+
+ /* Save the current focus cell in case we hit the edge */
+ cell = gtk_cell_area_get_focus_cell (icon_view->priv->cell_area);
+
while (item)
{
- cell = find_cell (icon_view, item, cell,
- GTK_ORIENTATION_HORIZONTAL,
- step, &count);
- if (count == 0)
+ gtk_icon_view_set_cell_data (icon_view, item);
+
+ if (gtk_cell_area_focus (icon_view->priv->cell_area, direction))
break;
item = find_item (icon_view, item, 0, step);
- count = count - step;
}
}
GTK_DIR_TAB_FORWARD);
}
+ gtk_cell_area_set_focus_cell (icon_view->priv->cell_area, cell);
return;
}
icon_view->priv->selection_mode != GTK_SELECTION_MULTIPLE)
icon_view->priv->anchor_item = item;
+ cell = gtk_cell_area_get_focus_cell (icon_view->priv->cell_area);
gtk_icon_view_set_cursor_item (icon_view, item, cell);
if (!icon_view->priv->ctrl_pressed &&
if (dirty)
g_signal_emit (icon_view, icon_view_signals[SELECTION_CHANGED], 0);
-#endif
}
static void
icon_view->priv->scroll_to_path = NULL;
}
- gtk_icon_view_stop_editing (icon_view, TRUE);
+ gtk_cell_area_stop_editing (icon_view->priv->cell_area, TRUE);
if (model)
{
static void
update_text_cell (GtkIconView *icon_view)
{
-#if _I_HAD_A_MILLION_DOLLARS_
- GtkIconViewCellInfo *info;
- GList *l;
- gint i;
-
if (icon_view->priv->text_column == -1 &&
icon_view->priv->markup_column == -1)
{
- if (icon_view->priv->text_cell != -1)
+ if (icon_view->priv->text_cell != NULL)
{
- if (icon_view->priv->pixbuf_cell > icon_view->priv->text_cell)
- icon_view->priv->pixbuf_cell--;
-
- info = g_list_nth_data (icon_view->priv->cell_list,
- icon_view->priv->text_cell);
-
- icon_view->priv->cell_list = g_list_remove (icon_view->priv->cell_list, info);
-
- free_cell_info (info);
-
- icon_view->priv->n_cells--;
- icon_view->priv->text_cell = -1;
+ gtk_cell_area_remove (icon_view->priv->cell_area,
+ icon_view->priv->text_cell);
+ icon_view->priv->text_cell = NULL;
}
}
else
{
- if (icon_view->priv->text_cell == -1)
+ if (icon_view->priv->text_cell == NULL)
{
- GtkCellRenderer *cell = gtk_cell_renderer_text_new ();
- gtk_cell_layout_pack_end (GTK_CELL_LAYOUT (icon_view), cell, FALSE);
- for (l = icon_view->priv->cell_list, i = 0; l; l = l->next, i++)
- {
- info = l->data;
- if (info->cell == cell)
- {
- icon_view->priv->text_cell = i;
- break;
- }
- }
+ icon_view->priv->text_cell = gtk_cell_renderer_text_new ();
+
+ gtk_cell_layout_pack_end (GTK_CELL_LAYOUT (icon_view), icon_view->priv->text_cell, FALSE);
}
-
- info = g_list_nth_data (icon_view->priv->cell_list,
- icon_view->priv->text_cell);
if (icon_view->priv->markup_column != -1)
gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (icon_view),
- info->cell,
+ icon_view->priv->text_cell,
"markup", icon_view->priv->markup_column,
NULL);
else
gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (icon_view),
- info->cell,
+ icon_view->priv->text_cell,
"text", icon_view->priv->text_column,
NULL);
if (icon_view->priv->item_orientation == GTK_ORIENTATION_VERTICAL)
- g_object_set (info->cell,
+ g_object_set (icon_view->priv->text_cell,
"alignment", PANGO_ALIGN_CENTER,
"wrap-mode", PANGO_WRAP_WORD_CHAR,
"xalign", 0.5,
"yalign", 0.0,
NULL);
else
- g_object_set (info->cell,
+ g_object_set (icon_view->priv->text_cell,
"alignment", PANGO_ALIGN_LEFT,
"wrap-mode", PANGO_WRAP_WORD_CHAR,
"xalign", 0.0,
"yalign", 0.5,
NULL);
}
-#endif
}
static void
update_pixbuf_cell (GtkIconView *icon_view)
{
-#if _I_HAD_A_MILLION_DOLLARS_
- GtkIconViewCellInfo *info;
- GList *l;
- gint i;
-
if (icon_view->priv->pixbuf_column == -1)
{
- if (icon_view->priv->pixbuf_cell != -1)
+ if (icon_view->priv->pixbuf_cell != NULL)
{
- if (icon_view->priv->text_cell > icon_view->priv->pixbuf_cell)
- icon_view->priv->text_cell--;
+ gtk_cell_area_remove (icon_view->priv->cell_area,
+ icon_view->priv->pixbuf_cell);
- info = g_list_nth_data (icon_view->priv->cell_list,
- icon_view->priv->pixbuf_cell);
-
- icon_view->priv->cell_list = g_list_remove (icon_view->priv->cell_list, info);
-
- free_cell_info (info);
-
- icon_view->priv->n_cells--;
- icon_view->priv->pixbuf_cell = -1;
+ icon_view->priv->pixbuf_cell = NULL;
}
}
else
{
- if (icon_view->priv->pixbuf_cell == -1)
+ if (icon_view->priv->pixbuf_cell == NULL)
{
- GtkCellRenderer *cell = gtk_cell_renderer_pixbuf_new ();
+ icon_view->priv->pixbuf_cell = gtk_cell_renderer_pixbuf_new ();
- gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (icon_view), cell, FALSE);
- for (l = icon_view->priv->cell_list, i = 0; l; l = l->next, i++)
- {
- info = l->data;
- if (info->cell == cell)
- {
- icon_view->priv->pixbuf_cell = i;
- break;
- }
- }
+ gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (icon_view), icon_view->priv->pixbuf_cell, FALSE);
}
- info = g_list_nth_data (icon_view->priv->cell_list,
- icon_view->priv->pixbuf_cell);
-
- gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (icon_view),
- info->cell,
- "pixbuf", icon_view->priv->pixbuf_column,
- NULL);
+ gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (icon_view),
+ icon_view->priv->pixbuf_cell,
+ "pixbuf", icon_view->priv->pixbuf_column,
+ NULL);
- if (icon_view->priv->item_orientation == GTK_ORIENTATION_VERTICAL)
- g_object_set (info->cell,
- "xalign", 0.5,
- "yalign", 1.0,
- NULL);
- else
- g_object_set (info->cell,
- "xalign", 0.0,
- "yalign", 0.0,
- NULL);
+ if (icon_view->priv->item_orientation == GTK_ORIENTATION_VERTICAL)
+ g_object_set (icon_view->priv->pixbuf_cell,
+ "xalign", 0.5,
+ "yalign", 1.0,
+ NULL);
+ else
+ g_object_set (icon_view->priv->pixbuf_cell,
+ "xalign", 0.0,
+ "yalign", 0.0,
+ NULL);
}
-#endif
}
/**
icon_view->priv->text_column = column;
}
- gtk_icon_view_stop_editing (icon_view, TRUE);
+
+ gtk_cell_area_stop_editing (icon_view->priv->cell_area, TRUE);
update_text_cell (icon_view);
icon_view->priv->markup_column = column;
}
- gtk_icon_view_stop_editing (icon_view, TRUE);
+ gtk_cell_area_stop_editing (icon_view->priv->cell_area, TRUE);
update_text_cell (icon_view);
icon_view->priv->pixbuf_column = column;
}
- gtk_icon_view_stop_editing (icon_view, TRUE);
+ gtk_cell_area_stop_editing (icon_view->priv->cell_area, TRUE);
update_pixbuf_cell (icon_view);
{
icon_view->priv->item_orientation = orientation;
- gtk_icon_view_stop_editing (icon_view, TRUE);
+ if (GTK_IS_ORIENTABLE (icon_view->priv->cell_area))
+ gtk_orientable_set_orientation (GTK_ORIENTABLE (icon_view->priv->cell_area),
+ icon_view->priv->item_orientation);
+
+ gtk_cell_area_stop_editing (icon_view->priv->cell_area, TRUE);
gtk_icon_view_invalidate_sizes (icon_view);
gtk_icon_view_queue_layout (icon_view);
{
icon_view->priv->columns = columns;
- gtk_icon_view_stop_editing (icon_view, TRUE);
+ gtk_cell_area_stop_editing (icon_view->priv->cell_area, TRUE);
gtk_icon_view_queue_layout (icon_view);
g_object_notify (G_OBJECT (icon_view), "columns");
{
icon_view->priv->item_width = item_width;
- gtk_icon_view_stop_editing (icon_view, TRUE);
+ gtk_cell_area_stop_editing (icon_view->priv->cell_area, TRUE);
gtk_icon_view_invalidate_sizes (icon_view);
gtk_icon_view_queue_layout (icon_view);
{
icon_view->priv->spacing = spacing;
- gtk_icon_view_stop_editing (icon_view, TRUE);
+ gtk_cell_area_stop_editing (icon_view->priv->cell_area, TRUE);
gtk_icon_view_invalidate_sizes (icon_view);
gtk_icon_view_queue_layout (icon_view);
{
icon_view->priv->row_spacing = row_spacing;
- gtk_icon_view_stop_editing (icon_view, TRUE);
+ gtk_cell_area_stop_editing (icon_view->priv->cell_area, TRUE);
gtk_icon_view_invalidate_sizes (icon_view);
gtk_icon_view_queue_layout (icon_view);
{
icon_view->priv->column_spacing = column_spacing;
- gtk_icon_view_stop_editing (icon_view, TRUE);
+ gtk_cell_area_stop_editing (icon_view->priv->cell_area, TRUE);
gtk_icon_view_invalidate_sizes (icon_view);
gtk_icon_view_queue_layout (icon_view);
{
icon_view->priv->margin = margin;
- gtk_icon_view_stop_editing (icon_view, TRUE);
+ gtk_cell_area_stop_editing (icon_view->priv->cell_area, TRUE);
gtk_icon_view_invalidate_sizes (icon_view);
gtk_icon_view_queue_layout (icon_view);
{
icon_view->priv->item_padding = item_padding;
- gtk_icon_view_stop_editing (icon_view, TRUE);
+ gtk_cell_area_stop_editing (icon_view->priv->cell_area, TRUE);
gtk_icon_view_invalidate_sizes (icon_view);
gtk_icon_view_queue_layout (icon_view);